package breeze.lepei.der.utils;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.text.SimpleDateFormat;
import java.io.ByteArrayOutputStream;
import android.view.View;
import android.graphics.Typeface;
import android.widget.TextView;
import android.content.pm.PackageInfo;

public class AppTools {
    /**
	*@author BREEZE
	*@description 应用内部工具类
	*/
	
	/**
	*@author BREEZE
	*@description 获取错误日志文件路径
	*@param Context
	*@return 路径
	*/
	public static String getAppExceptionFilePath(Context context){
		String path=context.getExternalCacheDir()+File.separator+"错误日志.txt";
		return path;
	}
	
	/**
	*@author BREEZE
	*@description 获取log路径
	*@param Context
	*@return 路径
	*/
	public static String getAppLogFilePath(Context context){
		return context.getExternalCacheDir()+File.separator+getTime("yyyy-MM-dd")+".log";
	}
	
	/**
	*@author BREEZE
	*@description 获取时间
	*@param 格式
	*@return 时间
	*/
	public static String getTime(String format){
		SimpleDateFormat date=new SimpleDateFormat(format);
		return date.format(System.currentTimeMillis());
	}
    
	/**
	*@author BREEZE
	*@description 写出数据至文本文件
	*@param 内容/路径
	*@exception 文件不存在/IO错误
	*/
	public static void writeDataToFile(String content,String filePath) throws FileNotFoundException, IOException{
		FileOutputStream output=new FileOutputStream(filePath);
		output.write(content.getBytes());
		output.close();
	}
	
	/**
	*@author BREEZE
	*@description 读取指定文件数据
	*@param 路径
	*@return 数据
	*@exception 文件不存在/IO错误
	*/
	public static String getDataFromFile(String filePath) throws FileNotFoundException, IOException{
		FileInputStream input=new FileInputStream(filePath);
		byte[] bytes=new byte[input.available()];
		input.read(bytes);
		input.close();
		return new String(bytes);
	}
	
	/**
	*@author BREEZE
	*@description 获取网页内容
	*@param 链接
	*@return 内容数据
	*@exception 格式错误/IO错误
	*/
	public static String getWebContent(String weblink) throws MalformedURLException, IOException{
		URL url=new URL(weblink);
		HttpURLConnection connection=(HttpURLConnection)url.openConnection();
		connection.setRequestMethod("GET");
		int length;
		byte[] bytes=new byte[1024];
		InputStream input=connection.getInputStream();
		ByteArrayOutputStream out=new ByteArrayOutputStream();
		while((length=input.read(bytes))!=-1){
			out.write(bytes,0,length);
		}
		out.close();
		input.close();
		return new String(out.toByteArray(),"utf-8");
	}
	
	/**
	*@author BREEZE
	*@description 获取网页图片
	*@param 图片直连
	*@return 位图
	*@exception 格式错误/IO错误
	*/
	public static Bitmap getWebBitmap(String weblink) throws MalformedURLException, IOException{
		URL url=new URL(weblink);
		HttpURLConnection connection=(HttpURLConnection)url.openConnection();
		connection.setRequestMethod("GET");
		InputStream inputstream=connection.getInputStream();
		Bitmap bitmap=BitmapFactory.decodeStream(inputstream);
		return bitmap;
	}
	
	/****************
     *
     * 发起添加群流程。群号：像素小天气-官方群(912514928) 的 key 为： lepIXINtLxsva0DmS0JXS7ogRmEaNc0E
     * 调用 joinQQGroup(lepIXINtLxsva0DmS0JXS7ogRmEaNc0E) 即可发起手Q客户端申请加群 像素小天气-官方群(912514928)
     *
     * @param key 由官网生成的key
     * @return 返回true表示呼起手Q成功，返回fals表示呼起失败
     ******************/
    public static boolean joinQQGroup(Context context) {
		String key="lepIXINtLxsva0DmS0JXS7ogRmEaNc0E";
        Intent intent = new Intent();
        intent.setData(Uri.parse("mqqopensdkapi://bizAgent/qm/qr?url=http%3A%2F%2Fqm.qq.com%2Fcgi-bin%2Fqm%2Fqr%3Ffrom%3Dapp%26p%3Dandroid%26k%3D"+key));
        // 此Flag可根据具体产品需要自定义，如设置，则在加群界面按返回，返回手Q主界面，不设置，按返回会返回到呼起产品界面    //intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
        try {
            context.startActivity(intent);
            return true;
        } catch (Exception e) {
            // 未安装手Q或安装的版本不支持
            return false;
        }
    }
	
	/**
	*@author BREEZE
	*@description 设置文本字体（中文）
	*@param 上下文/view
	*/
	public static void setTypefaceChinese(Context context,TextView view){
		Typeface typeface=Typeface.createFromAsset(context.getAssets(),"font/chi.ttf");
		view.setTypeface(typeface);
	}
	
	/**
	 *@author BREEZE
	 *@description 设置文本字体（英语）
	 *@param 上下文/view
	 */
	public static void setTypefaceEnglish(Context context,TextView view){
		Typeface typeface=Typeface.createFromAsset(context.getAssets(),"font/eng.ttf");
		view.setTypeface(typeface);
	}
	
	/**
	*@author BREEZE
	*@description 获取应用版本号
	*@param 上下文
	*/
	public static int getVersionCode(Context context){
		try{
			PackageInfo info=context.getPackageManager().getPackageInfo(context.getPackageName(),0);
			return info.versionCode;
		}catch(Exception e){
			return 0;
		}
	}
	
	/**
	*@author BREEZE
	*@description 获取版本信息
	*@param 上下文
	*/
	public static String getVersionInfo(Context context){
		try{
			PackageInfo info=context.getPackageManager().getPackageInfo(context.getPackageName(),0);
			StringBuilder sb=new StringBuilder();
			sb.append("[VerCode]").append(String.valueOf(info.versionCode)).append("\n")
			.append("[VerName]").append(info.versionName).append("\n")
			.append("[PkgName]").append(info.packageName).append("\n")
			.append("[FirstInstall]").append(getTime("yyyy-MM-dd HH:mm:ss",info.firstInstallTime)).append("\n")
			.append("[LastUpdate]").append(getTime("yyyy-MM-dd HH:mm:ss",info.lastUpdateTime)).append("\n")
			.append("[SharedId]").append(info.sharedUserId).append("\n")
			.append("[BaseRevCode]").append(String.valueOf(info.baseRevisionCode));
			return sb.toString();
		}catch(Exception e){
			return "";
		}
	}
	
	/**
	*@author BREEZE
	*@description 转换日期
	*@param 格式/long
	*@return string
	*/
	public static String getTime(String format,long time){
		SimpleDateFormat sm=new SimpleDateFormat(format);
		return sm.format(time);
	}
	
    
}
